Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / backend / benchmarking_utils.py

Displaying Raw • Download


tests/backend/benchmarking_utils.py v4.7.0-rc.4 (448cd46c) Text, 2.50 KB

T8b949e# SPDX-License-Identifier: 0BSD

Tff7b72import T7ee787gc
Tff7b72import T7ee787os
Tff7b72import T7ee787time
Tff7b72from T7ee787functools Tff7b72import Te6edf3wraps

Tff7b72import T7ee787psutil


Tff7b72def Td2a8ffget_memory_usage_mbTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e"""Returns the current process memory usage in MB."""
Te6edf3process Tff7b72= Te6edf3psutilTff7b72.Td2a8ffProcessTb4b4b4(Te6edf3osTff7b72.Td2a8ffgetpidTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3processTff7b72.Td2a8ffmemory_infoTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffrss Tff7b72/ Tb4b4b4(T79c0ff1024 Tff7b72* T79c0ff1024Tb4b4b4)


Tff7b72class T56d364BenchmarkResultTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4, Te6edf3duration_msTb4b4b4, Te6edf3memory_delta_mbTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffname Tff7b72= Te6edf3name
Tff7b72selfTff7b72.Td2a8ffduration_ms Tff7b72= Te6edf3duration_ms
Tff7b72selfTff7b72.Td2a8ffmemory_delta_mb Tff7b72= Te6edf3memory_delta_mb

Tff7b72def Tff7b72__repr__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ff<BenchmarkResult Tffd700{Tff7b72selfTff7b72.Td2a8ffnameTffd700}Ta5d6ff: Tffd700{Tff7b72selfTff7b72.Td2a8ffduration_msTffd700:Ta5d6ff.2fTffd700}Ta5d6ffms, Tffd700{Tff7b72selfTff7b72.Td2a8ffmemory_delta_mbTffd700:Ta5d6ff.2fTffd700}Ta5d6ffMB>Ta5d6ff"


Tff7b72def Td2a8ffbenchmarkTb4b4b4(Te6edf3nameTff7b72=Tff7b72NoneTb4b4b4, Te6edf3iterationsTff7b72=T79c0ff1Tb4b4b4)Tb4b4b4:
T8b949e"""Decorator to benchmark a function's execution time and memory delta."""

Tff7b72def Td2a8ffdecoratorTb4b4b4(Te6edf3funcTb4b4b4)Tb4b4b4:
Tf0883e@wrapsTb4b4b4(Te6edf3funcTb4b4b4)
Tff7b72def Td2a8ffwrapperTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3bench_name Tff7b72= Te6edf3name Tff7b72or Te6edf3funcTff7b72.Td2a8ff__name__

T8b949e# Warm up and GC
Te6edf3gcTff7b72.Td2a8ffcollectTb4b4b4(Tb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.1Tb4b4b4)

Te6edf3start_mem Tff7b72= Te6edf3get_memory_usage_mbTb4b4b4(Tb4b4b4)
Te6edf3start_time Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)

Te6edf3result_val Tff7b72= Tff7b72None
Tff7b72for Te6edf3_ Tff7b72in Tffa657rangeTb4b4b4(Te6edf3iterationsTb4b4b4)Tb4b4b4:
Te6edf3result_val Tff7b72= Te6edf3funcTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)

Te6edf3end_time Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
T8b949e# Force GC to see persistent memory growth
Te6edf3gcTff7b72.Td2a8ffcollectTb4b4b4(Tb4b4b4)
Te6edf3end_mem Tff7b72= Te6edf3get_memory_usage_mbTb4b4b4(Tb4b4b4)

Te6edf3duration Tff7b72= Tb4b4b4(Te6edf3end_time Tff7b72- Te6edf3start_timeTb4b4b4) Tff7b72* T79c0ff1000 Tff7b72/ Te6edf3iterations
Te6edf3mem_delta Tff7b72= Te6edf3end_mem Tff7b72- Te6edf3start_mem

Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffBENCHMARK: Tffd700{Te6edf3bench_nameTffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Iterations: Tffd700{Te6edf3iterationsTffd700}Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Avg Duration: Tffd700{Te6edf3durationTffd700:Ta5d6ff.2fTffd700}Ta5d6ff msTa5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff Memory Delta: Tffd700{Te6edf3mem_deltaTffd700:Ta5d6ff.2fTffd700}Ta5d6ff MBTa5d6ff"Tb4b4b4)

Tff7b72return Te6edf3result_valTb4b4b4, Te6edf3BenchmarkResultTb4b4b4(Te6edf3bench_nameTb4b4b4, Te6edf3durationTb4b4b4, Te6edf3mem_deltaTb4b4b4)

Tff7b72return Te6edf3wrapper

Tff7b72return Te6edf3decorator


Tff7b72class T56d364MemoryTrackerTb4b4b4:
T8b949e"""Helper to track memory changes over a block of code."""

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffname Tff7b72= Te6edf3name
Tff7b72selfTff7b72.Td2a8ffstart_mem Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffend_mem Tff7b72= T79c0ff0

Tff7b72def Tff7b72__enter__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3gcTff7b72.Td2a8ffcollectTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstart_mem Tff7b72= Te6edf3get_memory_usage_mbTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstart_time Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72self

Tff7b72def Tff7b72__exit__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3exc_typeTb4b4b4, Te6edf3exc_valTb4b4b4, Te6edf3exc_tbTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffend_time Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3gcTff7b72.Td2a8ffcollectTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffend_mem Tff7b72= Te6edf3get_memory_usage_mbTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffduration_ms Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffend_time Tff7b72- Tff7b72selfTff7b72.Td2a8ffstart_timeTb4b4b4) Tff7b72* T79c0ff1000
Tff7b72selfTff7b72.Td2a8ffmem_delta Tff7b72= Tff7b72selfTff7b72.Td2a8ffend_mem Tff7b72- Tff7b72selfTff7b72.Td2a8ffstart_mem
Tffa657printTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffTRACKER [Tffd700{Tff7b72selfTff7b72.Td2a8ffnameTffd700}Ta5d6ff]: Tffd700{Tff7b72selfTff7b72.Td2a8ffduration_msTffd700:Ta5d6ff.2fTffd700}Ta5d6ffms, Tffd700{Tff7b72selfTff7b72.Td2a8ffmem_deltaTffd700:Ta5d6ff.2fTffd700}Ta5d6ffMBTa5d6ff"Tb4b4b4,
Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────